/**
 * router.js 路由模块
 * 职责：
 *    处理路由
 *    根据不同的请求方式+请求路径设置具体的请求处理函数
 * 
 * 模块职责要单一，不要乱写
 * 划分模块的目的就是为了增强项目的可维护性
 * 提升开发效率
 */

var fs=require('fs')
var Student=require('./studentMg.js')

//Express提供了一种更好的方式
//专门用来包装路由的方法
var express=require('express')

//1.创建一个路由容器
var router=express.Router()

//2.把路由都挂载到router路由容器中
router.get('/students',function(req,res){
    /* 
      //readFile的第二个参数是可选的，传入utf8就是告诉它把读到的文件直接按照utf8编码转成我们能认识的字符
      //除了这样来转换之外，也可以通过data.tostring()的方式 
      fs.readFile('./db.json','utf8',function(err,data){
          if(err){
              return res.status(500).send('sever error.')
          }

         //从文件中读取到的数据一定是字符串
         //所以这里一定要手动转成对象
         var students=JSON.parse(data).students
         res.render('index.html',{
          fruits:[
              '苹果',
              '香蕉',
              '柚子',
              '脐橙'
          ],
          students:students
      })
      })
    */
    Student.find(function(err,students){
        if(err){
            return res.status(500).send('server error')
        }
        res.render('index.html',{
            fruits:[
                '苹果',
                '香蕉',
                '柚子',
                '脐橙'
            ],
            students:students
        })
    })
})

router.get('/students/new',function(req,res){
    res.render('new.html')
})

router.post('/students/new',function(req,res){
    //1.获取表单数据
    //2.处理
    //    将处理的数据保持到db.jaon文件中用以持久化
    //3.发送响应
    // 先读取出来，转成对象
    // 然后往对象中push数据
    // 然后把对象转为 字符串
    // 然后把字符串再次写入文件
    //console.log(req.body)
    new Student(req.body).save(function(err){
        if(err){
            return res.status(500).send("server error")
        }
        res.redirect('/students')
    })
})

/**
 * 渲染编辑学生页面
 */
router.get('/students/edit',function(req,res){
    //1.在客户端的列表页面中处理链接问题（需要有id参数）
    //2.获取要编辑的学生id
    //
    //3.渲染编辑页面
    //   根据id把学生信息查出来
    //   使用模板引擎渲染页面
 
    //replace() 
    Student.findById(req.query.id.replace(/"/g,''),function(err,student){
        if(err){
            return res.status(500).send('sever error')
        }
        res.render('edit.html',{
            student:student
        })
    })
})

/**
 * 处理编辑学生
 */
router.post('/students/edit',function(req,res){
 //1.获取表单数据
 //  req.body
 //2.更新
 //   Student.updateById()
 //3.发送响应
 var id=req.body.id.replace(/"/g,'')
 Student.findByIdAndUpdate(id,req.body,function(err){
     if(err){
         return res.status(500).sernd('server error')
     }
     res.redirect('/students')
 })
})

/**
 * 处理删除学生
 */
router.get('/students/delete',function(req,res){
    //1.获取表单数据，获取要删除的id
    //2.根据id执行删除操作
    //3.根据操作结果发生响应数据
    var id=req.query.id.replace(/"/g,'')
    Student.findByIdAndRemove(id,function(err){
        if(err){
            return status(500).send('server error')
        }
        res.redirect('/students')
    })
})

//3.将router导出
module.exports=router

//4.在app.js 文件中挂载这个路由容器-->app.use(router)

/*
//这种方式也不方便
module.exports=function(router){
    router.get('/',function(req,res){
        fs.readFile('./db.json','utf8',function(err,data){
            if(err){
                return res.status(500).send('sever error.')
            }
    
            //从文件中读取到的数据一定是字符串
            //所以这里一定要手动转成对象
           var students=JSON.parse(data).students
           res.render('index.html',{
            fruits:[
                '苹果',
                '香蕉',
                '柚子',
                '脐橙'
            ],
            students:students
        })
        })
        
    })
    
    router.get('/',function(req,res){})
    
    router.get('/',function(req,res){})
    
    router.get('/',function(req,res){})
    
    router.get('/',function(req,res){})
}

//在app.js文件中引用这个文件，并且传入参数app
*/

